// 引入
let mongoose = require('mongoose');

// 和数据库，建立连接，mongoose.connect('数据库地址');  
// 这里的数据库地址，也可以在 cmd 里面输入 “mongo”，他会弹出 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
// mongodb://127.0.0.1:27017 就是 数据库地址 后面加数据库名字 mongodb://127.0.0.1:27017/数据库名
mongoose.connect('mongodb://127.0.0.1:27017/zgq');

// 操作 zgq数据库下的 stus 表(集合)步骤：
// 1. 定义一个 Schema，用来规范数据库的类型  
// (1) mongoose.Schema 里面的数据，要与数据库里面的 字段，对应起来
// (2) 个人理解：这里的操作，就相当于之前的 关系型数据库里面创建 表里面规范字段一样
let StusShema = mongoose.Schema({
  name: String,
  age: Number,
  sex: String
});

// 2. 定义数据库模型  操作数据库
// (1) model 里面的第一个参数，要注意 1. 首字母大写   2. 要和数据库表(集合)名称对应
// let Stus = mongoose.model("表名", 规则);
let Stus = mongoose.model("Stus", StusShema);

// 3. 查询 stus 表的数据
// Stus.find({}, (err, res) => {
//   if (err) {
//     console.log("错误了，错误信息是：" + err);
//     return;
//   }
//   console.log(res);
// })

// 4. 增加数据   
// (1) 通过 实例化 Model 创建增加的数据
// let s = new Stus({
//   name: "李四",
//   age: 20,
//   sex: "男"
// });
// // (2) 执行增加 操作
// s.save(err => {
//   if (err) {
//     console.log("错误了，错误信息是：" + err);
//     return;
//   }
//   console.log("增加成功了");
// });
// 解惑: 每次 运行这个文件的时候，就会执行一次代码，就会执行一次（增删改查）

// // 5. 改（更新）
// // Stus.updateOne({"条件，也就是要修改的那条数据的特点，比如id"},{"修改的键和值","回调函数"  })
// Stus.updateOne({
//     "_id": "5f6c8b6053dd17efddecc30f"
//   }, {
//     "name": "张三"
//   },
//   (err, data) => {
//     if (err) {
//       console.log("错误了，错误信息是：" + err);
//       return;
//     }
//     console.log("增加成功了");
//   })

// 6. 删
Stus.deleteOne({
  "_id": "5f6c8bab53dd17efddecc310"
}, (err, res) => {
  if (err) {
    console.log("错误了，错误信息是：" + err);
    return;
  }
  console.log("删除成功了");
})